// ************************************************************************* //
//  File: avtBinnerFilter.h
// ************************************************************************* //

#ifndef AVT_Binner_FILTER_H
#define AVT_Binner_FILTER_H


#include <avtPluginStreamer.h>
#include <BinnerFilter.h>



class vtkDataSet;
class vtkStructuredGrid;

// ****************************************************************************
//  Class: avtBinnerFilter
//
//  Purpose:
//      A plugin operator for Binner.
//
//  Programmer: cristina -- generated by xml2avt
//  Creation:   Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************

class avtBinnerFilter : public avtPluginStreamer
{
public:
	avtBinnerFilter();
	virtual             ~avtBinnerFilter();

	static avtFilter    *Create();

	virtual const char  *GetType(void)  {
		return "avtBinnerFilter";
	};
	virtual const char  *GetDescription(void)
	{
		return "Binner";
	};

	virtual void         SetAtts(const AttributeGroup*);
	virtual bool         Equivalent(const AttributeGroup*);

protected:
	Binner atts;
	virtual void          RefashionDataObjectInfo(void);
	virtual void          VerifyInput(void);
	virtual vtkDataSet   *ExecuteData(vtkDataSet *, int, std::string);
	virtual void             PostExecute(void);
	virtual void             PreExecute(void);
private:
	vtkStructuredGrid *sgrid;
	int nprocs;
	int ndims;
	int grid_size;
	int dims[3];
	double extents[6];
	float step[3];
	float dataRange[2];
	double drange[2];
	float *data;
};


#endif
